package cn.coisini.service;

import cn.coisini.model.common.dtos.Result;
import cn.coisini.model.common.enums.ResultEnum;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;

/**
 * @author xiangshaw
 * Description: 文件上传 接口
 */
public interface FileUploadService {

    // 本地单文件上传
    Result<String> localUploadFile(MultipartFile file);

    // 本地多文件上传
    Result<List<String>> localUploadFiles(MultipartFile[] files);

    // 阿里云单文件上传
    Result<String> aliUploadFile(MultipartFile file);

    // 本地单文件删除
    Result<ResultEnum> localDeleteFile(String fileName);

    // 本地多文件删除
    Result<List<String>> localDeleteFiles(List<String> fileNames);

    // 阿里云单文件删除
    Result<ResultEnum> aliDeleteFile(String fileName);

    // Minio文件上传
    Result<List<String>> minioUploadFile(MultipartFile[] files);

    // 预览文件
    Result<String> minioPreviewFile(String fileName);

    // Minio文件下载
    Result<InputStream> minioDownloadFile(String fileName, HttpServletResponse response);

    // Minio文件删除
    Result<ResultEnum> minioDeleteFile(String fileName);
}
